package com.tools.web.interceptor.quota;

import com.tools.common.object.Note;
import com.tools.common.thread.Timeunit;
import org.springframework.web.servlet.HandlerInterceptor;

/**
 * 配额限制拦截器
 * 用于拦截业务已成功，但需要限制成功的次数
 * 比如注册功能，一个 IP 天只能注册 10 个账户等
 * 或者，邮箱验证码已发送，但是需要 1 分钟后才能重新发
 * 【注意】：若该拦截器跟身份拦截器一起使用，则它的执行顺序要在身份拦截器之后
 * */
@Note("配额限制拦截器：" +
        "用于拦截业务已成功，但需要限制成功的次数。" +
        "比如注册功能，一个 IP 天只能注册 10 个账户等。" +
        "或者，邮箱验证码已发送，但是需要 1 分钟后才能重新发。" +
        "【注意】：若该拦截器跟身份拦截器一起使用，则它的执行顺序要在身份拦截器之后")
public interface QuotaManager extends HandlerInterceptor {

    @Note("业务成功后，调用该方法自增配额")
    void increaseQuota(String action, Object uniqueID, long expiration, Timeunit timeunit);
}
